import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np

# 读取图像的原始数据
image_raw_data = tf.gfile.FastGFile('D:\\001-workspace\\001-Python\\cat.jpg', 'rb').read()  # 必须是 ‘rb’ 模式打开，否则会报错
with tf.Session() as sess:
    # 将图像使用 jpeg 的格式解码从而得到图像对应的三维矩阵
    # tf.image.decode_jpeg 函数对 png 格式的图像进行解码。解码之后的结果为一个张量，
    ## 在使用它的取值之前需要明确调用运行的过程。
    img_data = tf.image.decode_jpeg(image_raw_data)
    # print(img_data.dtype)
    # 输出解码之后的三维矩阵。
    # print(img_data.eval())
    # plt.imshow(img_data.eval())
    # plt.show()
    img_data = tf.image.convert_image_dtype(img_data, dtype=tf.float32)

    # print(img_data.eval())
    img_data = tf.image.convert_image_dtype(img_data, dtype=tf.uint8)
    # print(img_data.eval())
    # plt.imshow(img_data.eval())
    # plt.show()

    resized = tf.image.resize_images(img_data, [300, 300], method=0)
    cat = np.asarray(resized.eval(), dtype='uint8')
    plt.imshow(cat)
    plt.show()
    print(cat)
    # TensorFlow的函数处理图片后存储的数据是float32格式的，需要转换成uint8才能正确打印图片。
    # encoded_image = tf.image.encode_jpeg(img_data)
    # with tf.gfile.GFile('D:\\001-workspace\\001-Python\\output.jpg', 'wb') as f:
    #     f.write(encoded_image.eval())
